//一、引入express模块
const express = require('express');
//二、创建服务器对象
const app = express();
//引入解决跨域模块 cors
const cors = require('cors');

//获取post请求体中的数据
//1、安装、引入body-parser
const bodyParser = require('body-parser');
//2、将post请求体中的参数挂载到body中
app.use(bodyParser.urlencoded({extended:true}))

//引入cookie-parser 为了解析req.cookies
const cookieParser = require('cookie-parser');
//使用cookie-parser
app.use(cookieParser());
//静态资源托管
app.use(express.static('public'));//public文件夹中的所有文件暴露出来 都可以通过url访问
//使用跨域模块cors
app.use(cors());
//四、设置路由；
// //get 请求
// app.get('/testget',(req,res)=>{
//     console.log(req.query);
//     //有请求 就要有响应
//     res.send('get请求 test成功！')
// })
// //post请求
// app.post('/testpost',(req,res)=>{
//     console.log(req.body);
//     res.send('post请求 post请求成功！')
// })

//设置全局中间件
// app.use('/',(req,res,next)=>{
//     console.log(req.query);
//     if(req.query.msg == '帅'){
//         req.query.add ='好好学习，天天向上！';//设置req  添加req的属性
//         next();
//     }else{
//         res.send('game over！')
//     }
// })
//中间件的本质 就是一个函数  三个参数  req res next
//作用 拦截 更改res req
//req request 请求对象
//res respinse 响应对象
//next 放行 调用下一级中间件 下一个路由
// 作用；当拦截之后可以执行相关的逻辑 修改请求对象  终结res response请求  调用下一级路由 下一级中间件
//中间件分四类：自定义中间件（自己写的）；第三方中间件（body-parser）；内置的中间件（express-static）；路由器中间件；

//设置路由器
//1、引入路由器
const registerLogin = require('./router/registerLogin');
//2、使用
app.use(registerLogin);

//cookie的相关知识：
//cookie存储在浏览器中 易更改 大小有限制 不安全 重要东西不能在cookie中放
app.get('/testCookie',(req,res)=>{
    //读取cookie要用到中间件cookie-parser
    console.log(req.cookies);//从请求头中读取cookie
    res.cookie('name','tom',{maxAge:60*60*1000});//在响应报文中设置的cookie  maxAge设置的是过期时间 单位是毫秒
    res.cookie('age',18,{maxAge:60*60*1000});
    res.send('测试cookie');
})
app.get('/cookieTwo',(req,res)=>{
    console.log(req.cookies);//读取cookie  undefined  要用到第三方中间件 cookie-parser
    res.send('测试请求报文传递过来的cookie！');
})



//三、启动服务器
app.listen(3000,(err)=>{
    if(!err) console.log('启动服务器成功！');
    else console.log(err);
})